package com.ims.business.controller;

import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.ims.common.matatype.Dto;
import com.ims.common.matatype.Dtos;
import com.ims.common.util.IMSFormater;
import com.ims.common.util.IMSUtil;
import com.ims.common.vo.PageDto;
import com.ims.common.util.R;
import com.ims.common.util.SqlHelpUtil;

import java.util.Date;
import java.util.List;

import com.ims.business.constant.BusCons;
import com.ims.business.model.CardCatalog;
import com.ims.business.service.CardCatalogService;
import org.springframework.stereotype.Controller;
import com.ims.common.web.BaseController;
import com.ims.system.model.Param;
import com.ims.system.service.ParamService;
import com.ims.system.util.CacheCxt;

/**
 * <p>
 * 卡分类 前端控制器
 * </p>
 *
 * @author 陈骑元
 * @since 2019-07-07
 */
@Controller
@RequestMapping("/business/cardCatalog")
public class CardCatalogController extends BaseController {

    private String prefix = "business/cardCatalog/"; 
    @Autowired
    private CardCatalogService cardCatalogService;
    
    @Autowired
    private ParamService paramService;
	/**
	 * 
	 * 简要说明：初始化页面 
	 * 编写者：陈骑元 
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@GetMapping("init")
	public String init() {

		return prefix + "cardCatalogList";
	}

	/**
	 * 
	 * 简要说明：分页查询 
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@RequestMapping("list")
	@ResponseBody
	public PageDto list() {
		Dto pDto = Dtos.newDto(request);
		pDto.setOrder(" sort_no ASC" );
		Page<CardCatalog> page =cardCatalogService.listPage(pDto);
		CacheCxt.convertDict(page);
		return new PageDto(page);
	}

	/**
	 * 
	 * 简要说明： 跳转到新增页面 
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@GetMapping("add")
	public String add() {

		return prefix + "addCardCatalog";
	}

	/**
	 * 
	 * 简要说明： 新增信息保存 
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@PostMapping("save")
	@ResponseBody
	public R save(CardCatalog cardCatalog) {
		String userId=this.getTokenUserId();
		Date currentTime=IMSUtil.getDateTime();
		cardCatalog.setCreateBy(userId);
		cardCatalog.setCreateTime(currentTime);
		cardCatalog.setUpdateBy(userId);
		cardCatalog.setUpdateTime(currentTime);
		boolean result = cardCatalogService.insert(cardCatalog);
		if (result) {
			return R.ok();
		} else {
			return R.error("保存失败");
		}

	}
	/**
	 * 
	 * 简要说明： 跳转到编辑页面 
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@GetMapping("edit")
	public String edit(String id,Model model) {
		CardCatalog cardCatalog=cardCatalogService.selectById(id);
		model.addAttribute("cardCatalog", cardCatalog);
		return prefix + "editCardCatalog";
	}
	
	/**
	 * 
	 * 简要说明：修改信息
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@PostMapping("update")
	@ResponseBody
	public R update(CardCatalog cardCatalog) {
		String userId=this.getTokenUserId();
		Date currentTime=IMSUtil.getDateTime();
		cardCatalog.setUpdateBy(userId);
		cardCatalog.setUpdateTime(currentTime);
		boolean result = cardCatalogService.updateById(cardCatalog);
		
		if (result) {
			return R.ok();
		} else {
			return R.error("更新失败");
		}
		
	}
	
	/**
	 * 
	 * 简要说明： 展示详情
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@GetMapping("showDetail")
	public String showDetail(String id,Model model) {
		CardCatalog cardCatalog=cardCatalogService.selectById(id);
		model.addAttribute("cardCatalog",cardCatalog);
		return prefix + "showCardCatalog";
	}
	/**
	 * 
	 * 简要说明：删除信息
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@PostMapping("remove")
	@ResponseBody
	public R remove(String id) {
		boolean result = cardCatalogService.deleteById(id);
		if (result) {
			return R.ok();
		} else {
			return R.error("删除失败");
		}
		
	}
	
	/**
	 * 
	 * 简要说明：批量删除信息
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@PostMapping("batchRemove")
	@ResponseBody
	public R batchRemove(String ids) {
		List<String> idList=IMSFormater.separatStringToList(ids);
		boolean result = cardCatalogService.deleteBatchIds(idList);
		if (result) {
			return R.ok();
		} else {
			return R.error("删除失败");
		}
		
	}
	/**
	 * 
	 * 简要说明： 审车价格设置
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@GetMapping("auditCarSet")
	public String auditCarSet(Model model) {
		String sixYearInPrice=CacheCxt.getParamValue(BusCons.SIX_YEAR_IN_PRICE);
		String sixYearUpPrice=CacheCxt.getParamValue(BusCons.SIX_YEAR_UP_PRICE);
		model.addAttribute("sixYearInPrice", sixYearInPrice);
	    model.addAttribute("sixYearUpPrice", sixYearUpPrice);
		return prefix + "auditCarSet";
	}
	/**
	 * 
	 * 简要说明：保存审车价格信息
	 * 编写者：陈骑元
	 * 创建时间：2019-07-07
	 * @param 说明
	 * @return 说明
	 */
	@PostMapping("saveAuditCar")
	@ResponseBody
	public R saveAuditCar(String sixYearInPrice,String sixYearUpPrice) {
		    String userId=this.getTokenUserId();
		    Date currentTime=IMSUtil.getDateTime();
			EntityWrapper<Param> wrapper = new EntityWrapper<Param>();
			SqlHelpUtil.eq(wrapper, "param_key",BusCons.SIX_YEAR_IN_PRICE);
			Param param=paramService.selectOne(wrapper);
			if(IMSUtil.isNotEmpty(param)){
				param.setParamValue(sixYearInPrice);
				param.setUpdateBy(userId);
				param.setUpdateTime(currentTime);
				paramService.updateById(param);
				EntityWrapper<Param> wrapperUp = new EntityWrapper<Param>();
				SqlHelpUtil.eq(wrapperUp, "param_key",BusCons.SIX_YEAR_UP_PRICE);
				Param paramUp=paramService.selectOne(wrapperUp);
				paramUp.setParamValue(sixYearUpPrice);
				paramUp.setUpdateBy(userId);
				paramUp.setUpdateTime(currentTime);
				paramService.updateById(paramUp);
			}else{
				 param=new Param();
				 param.setParamKey(BusCons.SIX_YEAR_IN_PRICE);
				 param.setParamName("审车六年以内价格");
				 param.setParamValue(sixYearInPrice);
				 param.setCreateBy(userId);
				 param.setCreateTime(currentTime);
				 param.setUpdateBy(userId);
				 param.setUpdateTime(currentTime);
				 paramService.insert(param);
				Param paramUp=new Param();
				paramUp.setParamKey(BusCons.SIX_YEAR_UP_PRICE);
				paramUp.setParamName("审车六年以上价格");
				paramUp.setParamValue(sixYearUpPrice);
				paramUp.setCreateBy(userId);
				paramUp.setCreateTime(currentTime);
				paramUp.setUpdateBy(userId);
				paramUp.setUpdateTime(currentTime);
				 paramService.insert(paramUp);
			}
		  CacheCxt.flushParam();
		  return R.ok();
		
	}
	
}

